package com.dj.service;

import ca.uhn.fhir.rest.param.StringParam;
import org.hl7.fhir.dstu3.model.IdType;
import org.hl7.fhir.dstu3.model.Patient;

import java.util.Date;
import java.util.List;

/**
 * 患者操作
 * @author cyf
 * @description
 * @create 2018-06-27 13:38
 **/
public interface PatientService {

    /**
     * 保存
     * @param patient
     * @return
     */
    IdType savePatient(Patient patient);

    /**
     * 更新患者patient
     * @param id
     * @param patient
     * @return
     */
    IdType updatePatient(String id, Patient patient);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    Patient getPatientById(String id);

    /**
     * 根据id 和版本查询
     * @param id
     * @param version
     * @return
     */
    Patient getPatientByIdAndVersion(String id, String version);

    /**
     * 根据name 查询
     * @param name
     * @return
     */
    List<Patient> getPatientByName(StringParam name);

    /**
     * 删除
     * @param id
     * @return
     */
    Boolean deletePatient(String id);

    /**
     * 获取当前记录的更新时间
     * @param id
     * @return
     */
    Date getLastUpdatTime(String id);

    /**
     * 获取历史版本的更新时间
     * @param id
     * @param version
     * @return
     */
    Date getHistoryLastUpdatTime(String id, String version);

    /**
     * 查询所有历史记录
     * @param id
     * @return
     */
    List<Patient> getAllPatientById(String id);

}
